package br.com.controle.web;

import br.com.controle.ejb.PedidoSessionBean; 
import br.com.controle.entity.Pedido;  
import br.com.controle.entity.Pessoa;
import br.com.controle.entity.Produto;
import java.util.Date;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext; 
import javax.faces.event.ValueChangeEvent;
import javax.faces.model.SelectItem;

@ManagedBean(name = "pedidoController")
@SessionScoped
public class PedidoMBean {
    
    @EJB
    private PedidoSessionBean pedidoSessionBean;
    private Pedido pedido = new Pedido();
    private Pedido pedidoSelecionado;
    
    private float valorUnitario = 0;
    
    public PedidoMBean() {
    }
    
    public List getListaPedidos() { 
        return pedidoSessionBean.retrieve();  
    }     
    
 
    
    public void adicionarPedido() {
        System.out.println("##adicionarPedido");
        
        pedido.setDataPedido(new Date());
        pedidoSessionBean.create(pedido);        
        FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Nova pedido adicionada com sucesso!"));
    }
    
    public void novaPedido() {
        System.out.println("##novaPedido");
        pedido = new Pedido();
    }     
    
    public void carregarPedido() {
        System.out.println("##carregarPedido" + pedidoSelecionado.getId());        
        pedido = pedidoSessionBean.getPedido(pedidoSelecionado);
    }    
    
    public void excluirPedido() {
            pedidoSessionBean.delete(pedidoSelecionado);
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Excluído com sucesso!"));
    }    
    
    public void atualizaValorUnitario(){        
        System.out.println("##atualizaValorUnitario=" + getPedido().getIdProduto().getNome());
        this.valorUnitario = getPedido().getIdProduto().getValorUnitario();
         
        atualizaValorTotal();
    }
    
    public void atualizaValorTotal(){        
        System.out.println("##atualizaValorTotal");
        
        if( pedido.getQuantidade() != null && pedido.getQuantidade() != 0){
        
            float valorTotal = pedido.getIdProduto().getValorUnitario() * pedido.getQuantidade();        
            pedido.setValorTotal(valorTotal);
        }
    }    

    public Pedido getPedido() {
        return pedido;
    }

    public void setPedido(Pedido pedido) {
        this.pedido = pedido;
    }

    public Pedido getPedidoSelecionado() {
        return pedidoSelecionado;
    }

    public void setPedidoSelecionado(Pedido pedidoSelecionado) {
        this.pedidoSelecionado = pedidoSelecionado;
    }

    public float getValorUnitario() {
        return valorUnitario;
    }

    public void setValorUnitario(float valorUnitario) {
        this.valorUnitario = valorUnitario;
    }
    
    public javax.faces.model.SelectItem[] getPessoa(){
        SelectItem[] options = null;
        List<Pessoa> pessoa = pedidoSessionBean.getPessoa();
        if (pessoa != null && pessoa.size() > 0)
        {
            int i = 0;
            options = new SelectItem[pessoa.size()];
            for (Pessoa dc : pessoa)
            {
                options[i++] = new SelectItem(dc, dc.getNome());
            }
        }
        return options;
    }  
    
    public javax.faces.model.SelectItem[] getProduto(){
        SelectItem[] options = null;
        List<Produto> produto = pedidoSessionBean.getProduto();
        if (produto != null && produto.size() > 0)
        {
            int i = 0;
            options = new SelectItem[produto.size()];
            for (Produto dc : produto)
            {
                options[i++] = new SelectItem(dc, dc.getNome());
            }
        }
        return options;
    }     
}
